As multi-core multi-threaded processors become commonplace, there is a strong desire in the computer industry for allowing the operating system and applications to have better control over the resources available in the platform. As more cores and computing power are added to computer platforms, the rest of the platform resources, which are shared across the applications running on these cores, need to be well managed to create a balanced system. Today, the level of differentiation of computer system services provided to applications running on a central processor is limited to the processor core using the Task Priority Register (TPR). As application software goes through different task priority levels, this register is set by the software to mark the current priority level of the processor. This information is used to avoid the processor being interrupted by lower priority events.
The processor hardware ensures the priority enforcement inside the core and is essentially a mechanism to manage the available compute resources. But when it comes to resources outside of the core, currently there is no mechanism for the software to communicate service level requirements to potential platform level Quality of Service (QoS) mechanisms. This lack of fine grain management of the processor and platform resources may be exacerbated as more virtualization technologies are implemented, and computer users consolidate their servers by running multiple disparate applications on the same machine. To address this, QoS mechanisms outside the processor core are being developed at the component as well as at the platform level to provide ways for better management of the available resources. But without proper mechanisms to expose these capabilities to the OS and applications, full potential of platform QoS may not be realized.